import { Client } from "minio";
import JSZip from "jszip";
import { saveAs } from "file-saver";

import { data } from "./data";

var minioClient = new Client({
  endPoint: "minio.frp.hosea123.com",
  port: 443,
  useSSL: true,
  accessKey: "1TPQkHfsORdhOpEOQFrg",
  secretKey: "iFXnYU8V1GRSSHoYYzQJFBa3JjwCF2dZ2e9Q5Iwq",
});

minioClient.presignedUrl(
  "GET",
  "test",
  "icon.png",
  24 * 60 * 60,
  function (err, presignedUrl) {
    if (err) return console.log(err);
    console.log(presignedUrl);
  },
);

function uploadFile() {
  var Fs = require("fs");
  var file = "./demo/icon.png";
  var fileStream = Fs.createReadStream(file);
  var fileStat = Fs.stat(file, function (err, stats) {
    if (err) {
      return console.log(err);
    }
    minioClient.putObject(
      "test",
      "icon.png",
      fileStream,
      stats.size,
      function (err, objInfo) {
        if (err) {
          return console.log(err); // err should be null
        }
        console.log("Success", objInfo);
      },
    );
  });
}

/**
 * 从MinIO下载多个文件
 *
 */
function DownLoad() {
  const fileUrlList = data.data.files;
  async () => {
    // 初始化一个zip打包对象
    const zip = new JSZip();

    // 创建一个名为录音文件的新的文件目录
    const folder = zip.folder();
    for (let i = 0; i < fileUrlList.length; i++) {
      // const blob = await fetch(fileUrlList[i]).then(response => response.blob())
      const blob = await minioClient.getObject("test", fileUrlList[i].fileName);

      // 文件夹添加资源，图片也支持base64类型 {base64: true}
      folder.file(fileUrlList[i].fileName, blob, { Blob: true });
    }
    // 请求远程资源的blob，其他文件，比如视频、表格等也是一样的

    // 把打包内容异步转成blob二进制格式
    zip.generateAsync({ type: "blob" }).then((content) => {
      // 下载压缩包
      saveAs(content, "下载文件.zip");
    });
  };
}

DownLoad();
